home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 401-425 / disk_418 / moduladefs / graphic.mod < prev    next >
Text File  |  1992-05-06  |  4KB  |  201 lines

  1. (*************************************
  2.  * Name : Graphic.MOD                *
  3.  * Purpose : Graphics library        *
  4.  *           drawing routines        *
  5.  * Author : JSG                      *
  6.  *************************************)
  7.  
  8. IMPLEMENTATION MODULE Graphic;
  9.  
  10. FROM SYSTEM IMPORT ADDRESS,ADR;
  11. FROM AMIGABase IMPORT Regs,ExecBase,ExecOpenLib,LibCall;
  12.  
  13. CONST
  14.      text       = -60;
  15.      drawell    = -180;
  16.      areaell    = -186;
  17.      setrast    = -234;
  18.      move       = -240;
  19.      draw       = -246;
  20.      areamov    = -252;
  21.      areadr     = -258;
  22.      arend      = -264;
  23.      initarea   = -282;
  24.      setrgb4    = -288;
  25.      rectfill   = -306;
  26.      writepix   = -324;
  27.      flood      = -330;
  28.      setapen    = -342;
  29.      setbpen    = -348;
  30.  
  31. VAR
  32.     gfxbase : ADDRESS;
  33.     reg : Regs;
  34.  
  35.  
  36. PROCEDURE Draw(rP : ADDRESS; x,y : LONGINT);
  37.  
  38. BEGIN
  39.  
  40.   reg.a[1] := rP;
  41.   reg.d[0] := x;
  42.   reg.d[1] := y;
  43.   LibCall(gfxbase,draw,reg);
  44.  
  45. END Draw;
  46.  
  47.  
  48. PROCEDURE Move(rP:ADDRESS; x,y : LONGINT);
  49.  
  50. BEGIN
  51.    reg.a[1] := rP;
  52.    reg.d[0] := x;
  53.    reg.d[1] := y;
  54.    LibCall(gfxbase,move,reg);
  55. END Move;
  56.  
  57. PROCEDURE Text(rP:ADDRESS;VAR st : ARRAY OF CHAR;len : LONGINT);
  58.  
  59. BEGIN
  60.   reg.a[1] := rP;
  61.   reg.a[0] := ADR(st);
  62.   reg.d[0] := len;
  63.   LibCall(gfxbase,text,reg);
  64. END Text;
  65.  
  66. PROCEDURE SetAPen(rP:ADDRESS;fg:LONGINT);
  67.  
  68. BEGIN
  69.   reg.a[1] := rP;
  70.   reg.d[0] := fg;
  71.   LibCall(gfxbase,setapen,reg);
  72. END SetAPen;
  73.  
  74. PROCEDURE SetBPen(rP:ADDRESS;bg : LONGINT);
  75.  
  76. BEGIN
  77.   reg.a[1] := rP;
  78.   reg.d[0] := bg;
  79.   LibCall(gfxbase,setbpen,reg);
  80. END SetBPen;
  81.  
  82. PROCEDURE SetRast(rP:ADDRESS; bg :LONGINT);
  83.  
  84. BEGIN
  85.   reg.a[1] := rP;
  86.   reg.d[0] := bg;
  87.   LibCall(gfxbase,setrast,reg);
  88. END SetRast;
  89.  
  90. PROCEDURE RectFill(rP:ADDRESS; xmin,ymin,xmax,ymax : LONGINT);
  91.  
  92. BEGIN
  93.   reg.a[1] := rP;
  94.   reg.d[0] := xmin;
  95.   reg.d[1] := ymin;
  96.   reg.d[2] := xmax;
  97.   reg.d[3] := ymax;
  98.   LibCall(gfxbase,rectfill,reg);
  99. END RectFill;
  100.  
  101. PROCEDURE WritePixel(rP:ADDRESS; x,y:LONGINT);
  102.  
  103. BEGIN
  104.   reg.a[1] := rP;
  105.   reg.d[0] := x;
  106.   reg.d[1] := y;
  107.   LibCall(gfxbase,writepix,reg);
  108. END WritePixel;
  109.  
  110. PROCEDURE Flood(rP:ADDRESS;dm,x,y : LONGINT);
  111.  
  112. BEGIN
  113.   reg.a[1] := rP;
  114.   reg.d[2] := dm;
  115.   reg.d[0] := x;
  116.   reg.d[1] := y;
  117.   LibCall(gfxbase,flood,reg);
  118. END Flood;
  119.  
  120. PROCEDURE SetRGB4(vP:ADDRESS;n,ri,gi,bi:LONGINT);
  121.  
  122. BEGIN
  123.   reg.a[0] := vP;
  124.   reg.d[0] := n;
  125.   reg.d[1] := ri;
  126.   reg.d[2] := gi;
  127.   reg.d[3] := bi;
  128.   LibCall(gfxbase,setrgb4,reg);
  129. END SetRGB4;
  130.  
  131. PROCEDURE DrawEllipse(rP:ADDRESS;cx,cy,a,b:LONGINT);
  132.  
  133. BEGIN
  134.   reg.a[1] := rP;
  135.   reg.d[0] := cx;
  136.   reg.d[1] := cy;
  137.   reg.d[2] := a;
  138.   reg.d[3] := b;
  139.   LibCall(gfxbase,drawell,reg);
  140. END DrawEllipse;
  141.  
  142. PROCEDURE AreaEllipse(rP:ADDRESS;cx,cy,a,b:LONGINT);
  143.  
  144. BEGIN
  145.   reg.a[1] := rP;
  146.   reg.d[0] := cx;
  147.   reg.d[1] := cy;
  148.   reg.d[2] := a;
  149.   reg.d[3] := b;
  150.   LibCall(gfxbase,areaell,reg);
  151. END AreaEllipse;
  152.  
  153. PROCEDURE InitArea(ai,buff:ADDRESS;maxv:LONGINT);
  154.  
  155. BEGIN
  156.   reg.a[0] := ai;
  157.   reg.a[1] := buff;
  158.   reg.d[0] := maxv;
  159.   LibCall(gfxbase,initarea,reg);
  160. END InitArea;
  161.  
  162. PROCEDURE AreaMove(rP:ADDRESS;x,y:LONGINT) : LONGINT;
  163.  
  164. BEGIN
  165.   reg.a[1] := rP;
  166.   reg.d[0] := x;
  167.   reg.d[1] := y;
  168.   LibCall(gfxbase,areamov,reg);
  169.   RETURN reg.d[0];
  170. END AreaMove;
  171.  
  172. PROCEDURE AreaDraw(rP:ADDRESS;x,y:LONGINT):LONGINT;
  173.  
  174. BEGIN
  175.   reg.a[1] := rP;
  176.   reg.d[0] := x;
  177.   reg.d[1] := y;
  178.   LibCall(gfxbase,areadr,reg);
  179.   RETURN reg.d[0];
  180. END AreaDraw;
  181.  
  182. PROCEDURE AreaEnd(rP:ADDRESS);
  183.  
  184. BEGIN
  185.   reg.a[1] := rP;
  186.   LibCall(gfxbase,arend,reg);
  187. END AreaEnd;
  188.  
  189.  
  190. VAR st : ARRAY[0..15] OF CHAR;
  191.     r : Regs;
  192.  
  193. BEGIN
  194.    st := 'graphics.library';
  195.    r.a[1] := ADR(st);
  196.    r.d[0] := 0D;
  197.    LibCall(ExecBase(),ExecOpenLib(),r);
  198.    gfxbase := r.d[0];
  199. END Graphic.
  200.  
  201.